www.gusucode.com > DB-Libray 操作SQLServer编程的VC++ 一例-源码程序 > DB-Libray 操作SQLServer编程的VC++ 一例-源码程序\code\PhManage\MenuTreeView.cpp

    //Download by http://www.NewXing.com
// MenuTreeView.cpp : implementation file
//

#include "stdafx.h"
#include "PhysicM.h"
#include "MenuTreeView.h"
#include "LogView.h"
#include "mainfrm.h"

#include "ProviderDlg.h"
#include "PhysicSetDlg.h"
#include "PhysicRatedlg.h"
#include "dutyinfodlg.h"
#include "salesmandlg.h"
#include "hospitaldlg.h"
#include "officedlg.h"
#include "DoctorDlg.h"
#include "QueryDlg.h"
#include "SaleRecordMDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
///
static char *BaseInfoSetMenu[]={"厂家设置","药品信息设置","药品费用设置","职务设置","业务人员信息设置","医院设置","科室设置","医生设置",NULL};
static char *OperateMenu[]={"销售记录查询统计","销售记录维护",NULL};

/////////////////////////////////////////////////////////////////////////////
// CMenuTreeView

IMPLEMENT_DYNCREATE(CMenuTreeView, CTreeView)

CMenuTreeView::CMenuTreeView()
{
	//for (int i=0;i<10;i++)
	memset(fpt,0,sizeof(fpt));
	fpt[0]=ProviderInfo;
	fpt[1]=PhysicInfoSet;
	fpt[2]=PhysicRateInfo;
	fpt[3]=DutyInfoSet;
	fpt[4]=SalesManInfo;
	fpt[5]=HospitalInfo;
	fpt[6]=OfficeInfo;
	fpt[7]=DoctorInfo;
	fpt[8]=QueryCount;
	fpt[9]=SaleRecordM;
}

CMenuTreeView::~CMenuTreeView()
{
	if (pImage) 
		delete pImage;
}


BEGIN_MESSAGE_MAP(CMenuTreeView, CTreeView)
	//{{AFX_MSG_MAP(CMenuTreeView)
	ON_WM_CREATE()
	ON_NOTIFY_REFLECT(TVN_SELCHANGED, OnSelchanged)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CMenuTreeView drawing

void CMenuTreeView::OnDraw(CDC* pDC)
{
	CDocument* pDoc = GetDocument();
//	pDC->DrawIcon(10,10,AfxGetApp()->LoadIcon(IDR_MENUVIEW_TMPL));
	// TODO: add draw code here
}

/////////////////////////////////////////////////////////////////////////////
// CMenuTreeView diagnostics

#ifdef _DEBUG
void CMenuTreeView::AssertValid() const
{
	CTreeView::AssertValid();
}

void CMenuTreeView::Dump(CDumpContext& dc) const
{
	CTreeView::Dump(dc);
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CMenuTreeView message handlers

int CMenuTreeView::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CTreeView::OnCreate(lpCreateStruct) == -1)
		return -1;

	pImage=new CImageList();
	
	ASSERT (pImage !=NULL);
	pImage->Create(18,18,TRUE | ILC_COLOR32,8,0);
	pImage->Add(AfxGetApp()->LoadIcon(IDI_ICON8));
	pImage->Add(AfxGetApp()->LoadIcon(IDI_ICON2));
	pImage->Add(AfxGetApp()->LoadIcon(IDI_ICON3));
	pImage->Add(AfxGetApp()->LoadIcon(IDI_ICON1));
	pImage->Add(AfxGetApp()->LoadIcon(IDI_ICON4));
	pImage->Add(AfxGetApp()->LoadIcon(IDI_ICON5));
	pImage->Add(AfxGetApp()->LoadIcon(IDI_ICON6));
	pImage->Add(AfxGetApp()->LoadIcon(IDI_ICON7));
	
	pTree = &GetTreeCtrl();
	pTree->SetImageList(pImage,TVSIL_NORMAL);

	HTREEITEM hRoot,hChild;
	pTree->ModifyStyle(0,TVS_HASLINES | TVS_LINESATROOT | TVS_HASBUTTONS );
	hRoot=pTree->InsertItem("主菜单",0,0,TVI_ROOT);
	hChild=pTree->InsertItem("基础信息设置",0,0,hRoot);
	char **p=BaseInfoSetMenu;
	int i=0;
	while(*p!=NULL)
	{
		pTree->InsertItem(*p,i,i,hChild);
		i++;
		p++;
	}
	hChild=pTree->InsertItem("日常管理",0,0,hRoot);
	for(i=0,p=OperateMenu;*p!=NULL;i++)
	{
		pTree->InsertItem(*p,0,0,hChild);
		p++;
	}
	pTree->InsertItem("关于...",0,0,hRoot);
	pTree->Expand(hRoot,TVE_EXPAND);
	pTree->SelectItem(NULL);
	 //SetIcon(AfxGetApp()->LoadIcon(IDR_MENUVIEW_TMPL),TRUE);
	
	// TODO: Add your specialized creation code here
	
	return 0;
}


void CMenuTreeView::CallFun(CString str)
{
	char **p=BaseInfoSetMenu;
	int i=0;
	while(*p!=NULL)
	{
		if(str.Compare(*p)==0) 
		{
			if(fpt[i]) {
				(this->*fpt[i])();
				pTree->SelectItem(NULL);
			}
			break;
		}
		p++;
		i++;
	}
	if (*p) return;//已经调用
	int j=0;
	p=OperateMenu;
	while(*p!=NULL)
	{
		if(str.Compare(*p)==0) 
		{
			if(fpt[i+j]) {
				(this->*fpt[i+j])();
				pTree->SelectItem(NULL);
			}
			break;
		}
		p++;
		j++;
	}
}

void CMenuTreeView::OnSelchanged(NMHDR* pNMHDR, LRESULT* pResult) 
{
	NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
	HTREEITEM hTreeItem=pTree->GetSelectedItem();
	if(hTreeItem==NULL) return;
    CString ItemText=pTree->GetItemText(hTreeItem);
	CallFun(ItemText);
	*pResult = 0;
}
void CMenuTreeView::ProviderInfo()
{
	CProviderDlg pd;
	pd.DoModal();
}
void CMenuTreeView::PhysicInfoSet()
{
	CPhysicSetDlg pd;
	pd.DoModal();
}
void CMenuTreeView::PhysicRateInfo()
{
	CPhysicRateDlg rd;
	rd.DoModal();
}
void CMenuTreeView::DutyInfoSet()
{
	CDutyInfoDlg dutydlg;
	dutydlg.DoModal();
}
void CMenuTreeView::SalesManInfo()
{
	CSalesManDlg sd;
	sd.DoModal();	
}
void CMenuTreeView::HospitalInfo()
{
	CHospitalDlg hd;
	hd.DoModal();
}
void CMenuTreeView::OfficeInfo()
{
	COfficeDlg od;
	od.DoModal();
}
void CMenuTreeView::DoctorInfo()
{
	CDoctorDlg dd;
	dd.DoModal();
}
void CMenuTreeView::QueryCount()
{
	CQueryDlg qd;
	qd.DoModal();
}
void CMenuTreeView::SaleRecordM()
{
	CSaleRecordMDlg sd;
	sd.DoModal();
}